home *** CD-ROM | disk | FTP | other *** search
/ PC World 2007 January / PCWorld_2007-01_cd.bin / v cisle / autoit / autoit-v3.2.0.1-setup.exe / Include / Misc.au3 < prev    next >
Text File  |  2006-07-22  |  16KB  |  415 lines

  1. ; Include Version:1.66 (17 July 2006)
  2. #include-once
  3. ; ------------------------------------------------------------------------------
  4. ;
  5. ; AutoIt Version: 3.1.1++
  6. ; Language:       English
  7. ; Description:    Functions that assist with Common Dialogs.
  8. ;
  9. ; ------------------------------------------------------------------------------
  10. ; Color Dialog constants
  11. Global Const $CC_ANYCOLOR = 0x100
  12. Global Const $CC_FULLOPEN = 0x2
  13. Global Const $CC_RGBINIT = 0x1
  14. ; Font Dialog constants
  15. Global Const $CF_EFFECTS = 0x100
  16. Global Const $CF_PRINTERFONTS = 0x2
  17. Global Const $CF_SCREENFONTS = 0x1
  18. Global Const $CF_NOSCRIPTSEL = 0x800000
  19. Global Const $CF_INITTOLOGFONTSTRUCT = 0x40
  20. Global Const $DEFAULT_PITCH = 0
  21. Global Const $FF_DONTCARE = 0
  22. Global Const $LOGPIXELSX = 88
  23. ;===============================================================================
  24. ;
  25. ; Description:            _ChooseColor
  26. ; Parameter(s):        $i_ReturnType - Optional: determines return type
  27. ;                            $i_colorref - Optional: default selected Color
  28. ;                            $i_refType - Optional: Type of $i_colorref passed in
  29. ; Requirement:            None
  30. ; Return Value(s):    Returns COLORREF rgbcolor if $i_refType = 0 (default)
  31. ;                            Returns Hex RGB value if $i_refType = 1
  32. ;                            Returns Hex BGR Color if $i_refType = 2
  33. ;                            if error occurs, @error is set
  34. ; User CallTip:        _ChooseColor([$i_ReturnType = 0[, $i_colorref = 0[, $i_refType=0]]]) Creates a Color dialog box that enables the user to select a color. (required: <Misc.au3>)
  35. ; Author(s):            Gary Frost (custompcs at charter dot net)
  36. ; Note(s):                $i_ReturnType = 0 then COLORREF rgbcolor is returned (default)
  37. ;                            $i_ReturnType = 1 then Hex BGR Color is returned
  38. ;                            $i_ReturnType = 2 Hex RGB Color is returned
  39. ;
  40. ;                            $i_colorref = 0 (default)
  41. ;
  42. ;                            $i_refType = 0 then $i_colorref is COLORREF rgbcolor value (default)
  43. ;                            $i_refType = 1 then $i_colorref is BGR hex value
  44. ;                            $i_refType = 2 then $i_colorref is RGB hex value
  45. ;
  46. ;===============================================================================
  47. Func _ChooseColor($i_ReturnType = 0, $i_colorref = 0, $i_refType = 0)
  48. ;~ typedef struct {
  49. ;~     DWORD lStructSize;
  50. ;~     HWND hwndOwner;
  51. ;~     HWND hInstance;
  52. ;~     COLORREF rgbResult;
  53. ;~     COLORREF *lpCustColors;
  54. ;~     DWORD Flags;
  55. ;~     LPARAM lCustData;
  56. ;~     LPCCHOOKPROC lpfnHook;
  57. ;~     LPCTSTR lpTemplateName;
  58. ;~ } CHOOSECOLOR, *LPCHOOSECOLOR;
  59.     Local $custcolors = "int[16]"
  60.     Local $struct = "dword;int;int;int;ptr;dword;int;ptr;ptr"
  61.     Local $p = DllStructCreate($struct)
  62.     If @error Then
  63.         ;MsgBox(0,"","Error in DllStructCreate " & @error);
  64.         SetError(-1)
  65.         Return -1
  66.     EndIf
  67.     Local $cc = DllStructCreate($custcolors)
  68.     If @error Then
  69.         ; MsgBox(0,"","Error in DllStructCreate " & @error);
  70.         ;        DllStructDelete ($p)
  71.         SetError(-2)
  72.         Return -1
  73.     EndIf
  74.     If ($i_refType == 1) Then
  75.         $i_colorref = Int($i_colorref)
  76.     ElseIf ($i_refType == 2) Then
  77.         $i_colorref = Hex(String($i_colorref), 6)
  78.         $i_colorref = '0x' & StringMid($i_colorref, 5, 2) & StringMid($i_colorref, 3, 2) & StringMid($i_colorref, 1, 2)
  79.     EndIf
  80.     DllStructSetData($p, 1, DllStructGetSize($p))
  81.     DllStructSetData($p, 2, 0)
  82.     DllStructSetData($p, 4, $i_colorref)
  83.     DllStructSetData($p, 5, DllStructGetPtr($cc))
  84.     DllStructSetData($p, 6, BitOR($CC_ANYCOLOR, $CC_FULLOPEN, $CC_RGBINIT))
  85.     Local $ret = DllCall("comdlg32.dll", "long", "ChooseColor", "ptr", DllStructGetPtr($p))
  86.     If ($ret[0] == 0) Then
  87.         ; user selected cancel or struct settings incorrect
  88.         ;        DllStructDelete ($p)
  89.         ;        DllStructDelete ($cc)
  90.         SetError(-3)
  91.         Return -1
  92.     EndIf
  93.     Local $color_picked = DllStructGetData($p, 4)
  94.     ;    DllStructDelete ($p)
  95.     ;    DllStructDelete ($cc)
  96.     If ($i_ReturnType == 1) Then
  97.         ; return Hex BGR Color
  98.         Return '0x' & Hex(String($color_picked), 6)
  99.     ElseIf ($i_ReturnType == 2) Then
  100.         ; return Hex RGB Color
  101.         $color_picked = Hex(String($color_picked), 6)
  102.         Return '0x' & StringMid($color_picked, 5, 2) & StringMid($color_picked, 3, 2) & StringMid($color_picked, 1, 2)
  103.     ElseIf ($i_ReturnType == 0) Then
  104.         Return $color_picked
  105.     Else
  106.         SetError(-4)
  107.         Return -1
  108.     EndIf
  109. EndFunc   ;==>_ChooseColor
  110. ;===============================================================================
  111. ;
  112. ; Description:            _ChooseFont
  113. ; Parameter(s):        $s_FontName - Optional: Default font name
  114. ;                            $i_size - Optional: pointsize of font
  115. ;                            $i_colorref - Optional: COLORREF rgbColors
  116. ; Requirement:            None.
  117. ; Return Value(s):    Returns Array, $array[0] contains the number of elements
  118. ;                            if error occurs, @error is set
  119. ; User CallTip:        _ChooseFont([$s_FontName = "Courier New"[, $i_size = 10[, $i_colorref = 0]]]) Creates a Font dialog box that enables the user to choose attributes for a logical font. (required: <Misc.au3>)
  120. ; Author(s):            Gary Frost (custompcs at charter dot net)
  121. ; Note(s):                $array[1] - attributes = BitOr of italic:2, undeline:4, strikeout:8
  122. ;                            $array[2] - fontname
  123. ;                            $array[3] - font size = point size
  124. ;                            $array[4] - font weight = = 0-1000
  125. ;                            $array[5] - COLORREF rgbColors
  126. ;                            $array[6] - Hex BGR Color
  127. ;                            $array[7] - Hex RGB Color
  128. ;
  129. ;===============================================================================
  130. Func _ChooseFont($s_FontName = "Courier New", $i_size = 10, $i_colorref = 0)
  131. ;~ typedef struct {
  132. ;~     DWORD lStructSize;
  133. ;~     HWND hwndOwner;
  134. ;~     HDC hDC;
  135. ;~     LPLOGFONT lpLogFont;
  136. ;~     INT iPointSize;
  137. ;~     DWORD Flags;
  138. ;~     COLORREF rgbColors;
  139. ;~     LPARAM lCustData;
  140. ;~     LPCFHOOKPROC lpfnHook;
  141. ;~     LPCTSTR lpTemplateName;
  142. ;~     HINSTANCE hInstance;
  143. ;~     LPTSTR lpszStyle;
  144. ;~     WORD nFontType;
  145. ;~     INT nSizeMin;
  146. ;~     INT nSizeMax;
  147. ;~ } CHOOSEFONT, *LPCHOOSEFONT;
  148. ;~ typedef struct tagLOGFONT {
  149. ;~   LONG lfHeight;
  150. ;~   LONG lfWidth;
  151. ;~   LONG lfEscapement;
  152. ;~   LONG lfOrientation;
  153. ;~   LONG lfWeight;
  154. ;~   BYTE lfItalic;
  155. ;~   BYTE lfUnderline;
  156. ;~   BYTE lfStrikeOut;
  157. ;~   BYTE lfCharSet;
  158. ;~   BYTE lfOutPrecision;
  159. ;~   BYTE lfClipPrecision;
  160. ;~   BYTE lfQuality;
  161. ;~   BYTE lfPitchAndFamily;
  162. ;~   TCHAR lfFaceName[LF_FACESIZE]; 32 chars max
  163. ;~ } LOGFONT, *PLOGFONT;
  164.     Local $ret = DllCall("gdi32.dll", "long", "GetDeviceCaps", "long", 0, "long", $LOGPIXELSX)
  165.     If ($ret[0] == -1) Then
  166.         SetError(-3)
  167.         Return -1
  168.     EndIf
  169.     Local $lfHeight = Round(($i_size * $ret[2]) / 72, 0)
  170.     Local $logfont = "int;int;int;int;int;byte;byte;byte;byte;byte;byte;byte;byte;char[32]"
  171.     Local $struct = "dword;int;int;ptr;int;dword;int;int;ptr;ptr;int;ptr;dword;int;int"
  172.     Local $p = DllStructCreate($struct)
  173.     If @error Then
  174.         ;MsgBox(0,"","Error in DllStructCreate " & @error);
  175.         SetError(-1)
  176.         Return -1
  177.     EndIf
  178.     Local $lf = DllStructCreate($logfont)
  179.     If @error Then
  180.         ; MsgBox(0,"","Error in DllStructCreate " & @error);
  181.         ;        DllStructDelete ($p)
  182.         SetError(-2)
  183.         Return -1
  184.     EndIf
  185.     DllStructSetData($p, 1, DllStructGetSize($p))
  186.     DllStructSetData($p, 2, 0)
  187.     DllStructSetData($p, 4, DllStructGetPtr($lf))
  188.     DllStructSetData($p, 5, $i_size)
  189.     DllStructSetData($p, 6, BitOR($CF_SCREENFONTS, $CF_PRINTERFONTS, $CF_EFFECTS, $CF_INITTOLOGFONTSTRUCT, $CF_NOSCRIPTSEL))
  190.     DllStructSetData($p, 7, $i_colorref)
  191.     DllStructSetData($p, 13, 0)
  192.     DllStructSetData($lf, 1, $lfHeight + 1)
  193.     DllStructSetData($lf, 6, 0)
  194.     DllStructSetData($lf, 7, 0)
  195.     DllStructSetData($lf, 8, 0)
  196.     DllStructSetData($lf, 14, $s_FontName)
  197.     $ret = DllCall("comdlg32.dll", "long", "ChooseFont", "ptr", DllStructGetPtr($p))
  198.     If ($ret[0] == 0) Then
  199.         ; user selected cancel or struct settings incorrect
  200.         ;        DllStructDelete ($p)
  201.         ;        DllStructDelete ($lf)
  202.         SetError(-3)
  203.         Return -1
  204.     EndIf
  205.     Local $fontname = DllStructGetData($lf, 14)
  206.     If (StringLen($fontname) == 0 And StringLen($s_FontName) > 0) Then
  207.         $fontname = $s_FontName
  208.     EndIf
  209.     Local $italic = 0
  210.     Local $underline = 0
  211.     Local $strikeout = 0
  212.     If (DllStructGetData($lf, 6)) Then
  213.         $italic = 2
  214.     EndIf
  215.     If (DllStructGetData($lf, 7)) Then
  216.         $underline = 4
  217.     EndIf
  218.     If (DllStructGetData($lf, 8)) Then
  219.         $strikeout = 8
  220.     EndIf
  221.     Local $attributes = BitOR($italic, $underline, $strikeout)
  222.     Local $size = DllStructGetData($p, 5) / 10
  223.     Local $weight = DllStructGetData($lf, 5)
  224.     Local $colorref = DllStructGetData($p, 7)
  225.     ;    DllStructDelete ($p)
  226.     ;    DllStructDelete ($lf)
  227.     Local $color_picked = Hex(String($colorref), 6)
  228.     Return StringSplit($attributes & "," & $fontname & "," & $size & "," & $weight & "," & $colorref & "," & '0x' & $color_picked & "," & '0x' & StringMid($color_picked, 5, 2) & StringMid($color_picked, 3, 2) & StringMid($color_picked, 1, 2), ",")
  229. EndFunc   ;==>_ChooseFont
  230. ;===============================================================================
  231. ;
  232. ; Description:      Copy Files to Clipboard Like Explorer does
  233. ; Parameter(s):     $sFile      - Full Path to File(s)
  234. ;                   $sSeperator - Seperator for multiple Files, Default = '|'
  235. ; Requirement(s):   v3.1.1.122+
  236. ; Return Value(s):  On Success - True
  237. ;                   On Failure - False and
  238. ;                                    Sets @ERROR to:    1 - Unable to Open Clipboard
  239. ;                                                    2 - Unable to Empty Cipboard
  240. ;                                                    3 - GlobalAlloc Failed
  241. ;                                                    4 - GlobalLock Failed
  242. ;                                                    5 - Unable to Create H_DROP
  243. ;                                                    6 - Unable to Update Clipboard
  244. ;                                                    7 - Unable to Close Clipboard
  245. ;                                                    8 - GlobalUnlock Failed
  246. ; Author(s):        Piccaso (Florian Fida)
  247. ; Note(s):
  248. ;
  249. ;===============================================================================
  250. Func _ClipPutFile($sFile, $sSeperator = "|")
  251.     Local $vDllCallTmp, $nGlobMemSize, $hGlobal, $DROPFILES, $i, $hLock
  252.     Local $GMEM_MOVEABLE = 0x0002, $CF_HDROP = 15
  253.     $sFile = $sFile & $sSeperator & $sSeperator
  254.     $nGlobMemSize = StringLen($sFile) + 20 ; 20 = size of DROPFILES whitout buffer
  255.     $vDllCallTmp = DllCall("user32.dll", "int", "OpenClipboard", "hwnd", 0)
  256.     If @error Or $vDllCallTmp[0] = 0 Then
  257.         SetError(1)
  258.         Return False
  259.     EndIf
  260.     $vDllCallTmp = DllCall("user32.dll", "int", "EmptyClipboard")
  261.     If @error Or $vDllCallTmp[0] = 0 Then
  262.         SetError(2)
  263.         Return False
  264.     EndIf
  265.     $vDllCallTmp = DllCall("kernel32.dll", "long", "GlobalAlloc", "int", $GMEM_MOVEABLE, "int", $nGlobMemSize)
  266.     If @error Or $vDllCallTmp[0] < 1 Then
  267.         SetError(3)
  268.         Return False
  269.     EndIf
  270.     $hGlobal = $vDllCallTmp[0]
  271.     $vDllCallTmp = DllCall("kernel32.dll", "long", "GlobalLock", "long", $hGlobal)
  272.     If @error Or $vDllCallTmp[0] < 1 Then
  273.         SetError(4)
  274.         Return False
  275.     EndIf
  276.     $hLock = $vDllCallTmp[0]
  277.     $DROPFILES = DllStructCreate("dword;ptr;int;int;int;char[" & StringLen($sFile) & "]", $hLock)
  278.     If @error Then
  279.         SetError(5)
  280.         Return False
  281.     EndIf
  282.     DllStructSetData($DROPFILES, 1, DllStructGetSize($DROPFILES) - StringLen($sFile))
  283.     DllStructSetData($DROPFILES, 2, 0)
  284.     DllStructSetData($DROPFILES, 3, 0)
  285.     DllStructSetData($DROPFILES, 4, 0)
  286.     DllStructSetData($DROPFILES, 5, 0)
  287.     DllStructSetData($DROPFILES, 6, $sFile)
  288.     For $i = 1 To StringLen($sFile)
  289.         If DllStructGetData($DROPFILES, 6, $i) = Asc($sSeperator) Then DllStructSetData($DROPFILES, 6, 0, $i)
  290.     Next
  291.     $vDllCallTmp = DllCall("user32.dll", "long", "SetClipboardData", "int", $CF_HDROP, "long", $hGlobal)
  292.     If @error Or $vDllCallTmp[0] < 1 Then
  293.         SetError(6)
  294.         $DROPFILES = 0
  295.         Return False
  296.     EndIf
  297.     $vDllCallTmp = DllCall("user32.dll", "int", "CloseClipboard")
  298.     If @error Or $vDllCallTmp[0] = 0 Then
  299.         SetError(7)
  300.         $DROPFILES = 0
  301.         Return False
  302.     EndIf
  303.     $vDllCallTmp = DllCall("kernel32.dll", "int", "GlobalUnlock", "long", $hGlobal)
  304.     If @error Then
  305.         SetError(8)
  306.         $DROPFILES = 0
  307.         Return False
  308.     EndIf
  309.     $vDllCallTmp = DllCall("kernel32.dll", "int", "GetLastError")
  310.     If $vDllCallTmp = 0 Then
  311.         $DROPFILES = 0
  312.         SetError(8)
  313.         Return False
  314.     Else
  315.         $DROPFILES = 0
  316.         Return True
  317.     EndIf
  318. EndFunc   ;==>_ClipPutFile
  319. ;
  320. ;===============================================================================
  321. ;
  322. ; Function Name:    _Iif()
  323. ; Description:      Perform a boolean test within an expression.
  324. ; Parameter(s):     $f_Test     - Boolean test.
  325. ;                   $v_TrueVal  - Value to return if $f_Test is true.
  326. ;                   $v_FalseVal - Value to return if $f_Test is false.
  327. ; Requirement(s):   None.
  328. ; Return Value(s):  One of $v_TrueVal or $v_FalseVal.
  329. ; Author(s):        Dale (Klaatu) Thompson
  330. ;
  331. ;===============================================================================
  332. Func _Iif($f_Test, $v_TrueVal, $v_FalseVal)
  333.     If $f_Test Then
  334.         Return $v_TrueVal
  335.     Else
  336.         Return $v_FalseVal
  337.     EndIf
  338. EndFunc   ;==>_Iif
  339. ;===============================================================================
  340. ;
  341. ; Description:    _MouseTrap
  342. ; Parameter(s):    $i_left - Left coord
  343. ;                 $i_top - Top coord
  344. ;                 $i_right - Right coord
  345. ;                 $i_bottom - Bottom coord
  346. ; User CallTip:   _MouseTrap([$i_left = 0[, $i_top = 0[, $i_right = 0[, $i_bottom = 0]]]]) Confine the Mouse Cursor to specified coords. (required: <Misc.au3>)
  347. ; Author(s):      Gary Frost (custompcs at charter dot net)
  348. ; Note(s):        Use _MouseTrap() with no params to release the Mouse Cursor
  349. ;
  350. ;===============================================================================
  351. Func _MouseTrap($i_left = 0, $i_top = 0, $i_right = 0, $i_bottom = 0)
  352.     Local $av_ret
  353.     If @NumParams == 0 Then
  354.         $av_ret = DllCall("user32.dll", "int", "ClipCursor", "int", 0)
  355.     Else
  356.         If @NumParams == 2 Then
  357.             $i_right = $i_left + 1
  358.             $i_bottom = $i_top + 1
  359.         EndIf
  360.         Local $Rect = DllStructCreate("int;int;int;int")
  361.         If @error Then Return 0
  362.         DllStructSetData($Rect, 1, $i_left)
  363.         DllStructSetData($Rect, 2, $i_top)
  364.         DllStructSetData($Rect, 3, $i_right)
  365.         DllStructSetData($Rect, 4, $i_bottom)
  366.         $av_ret = DllCall("user32.dll", "int", "ClipCursor", "ptr", DllStructGetPtr($Rect))
  367.         ;        DllStructDelete($Rect)
  368.     EndIf
  369.     Return $av_ret[0]
  370. EndFunc   ;==>_MouseTrap
  371. ;===============================================================================
  372. ;
  373. ; Description:    _Singleton
  374. ; Parameter(s):    $occurenceName
  375. ;               $flag
  376. ; User CallTip:   _Singleton($occurenceName [,$flag = 0]) Check if no other occurence is running. (required: <Misc.au3>)
  377. ; Return Value(s):  if $flag = 1
  378. ; Author(s):      Valik
  379. ;
  380. ;===============================================================================
  381. Func _Singleton($occurenceName, $flag = 0)
  382.     Local $ERROR_ALREADY_EXISTS = 183
  383.     $occurenceName = StringReplace($occurenceName, "\", "") ; to avoid error
  384.     ;    Local $handle = DllCall("kernel32.dll", "int", "CreateSemaphore", "int", 0, "long", 1, "long", 1, "str", $occurenceName)
  385.     Local $handle = DllCall("kernel32.dll", "int", "CreateMutex", "int", 0, "long", 1, "str", $occurenceName)
  386.     Local $lastError = DllCall("kernel32.dll", "int", "GetLastError")
  387.     If $lastError[0] = $ERROR_ALREADY_EXISTS Then
  388.         If $flag = 0 Then
  389.             Exit -1
  390.         Else
  391.             SetError($lastError[0])
  392.             Return 0
  393.         EndIf
  394.     EndIf
  395.     Return $handle[0]
  396. EndFunc   ;==>_Singleton
  397. ;===============================================================================
  398. ;
  399. ; Description:    _IsPressed
  400. ; Parameter(s):    $s_hexKey - key to check for
  401. ;                        $v_dll = Handle to dll or default to user32.dll
  402. ;
  403. ; User CallTip:   _IsPressed($s_hexKey[, $v_dll = 'user32.dll']) Check if key has been pressed. (required: <Misc.au3>)
  404. ; Return Value(s):  1 if true
  405. ;                            0 if false
  406. ; Author(s):      ezzetabi and Jon
  407. ;
  408. ;===============================================================================
  409. Func _IsPressed($s_hexKey, $v_dll = 'user32.dll')
  410.     ; $hexKey must be the value of one of the keys.
  411.     ; _Is_Key_Pressed will return 0 if the key is not pressed, 1 if it is.
  412.     Local $a_R = DllCall($v_dll, "int", "GetAsyncKeyState", "int", '0x' & $s_hexKey)
  413.     If Not @error And BitAND($a_R[0], 0x8000) = 0x8000 Then Return 1
  414.     Return 0
  415. EndFunc   ;==>_IsPressed